
package Controlador.ComponentesCompuestos;

    
import Controlador.Controladores.FuenteTabla;
import Controlador.Interfaz.AutoCompletion;
import Controlador.Interfaz.DataFuente;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;

public final class ComboFuente  extends JComboBox implements  DataFuente, Observer{
 
    private String Campo="";
    private String[] Tipo={"Texto","Numerico","Boleano"};
    private FuenteTabla tbl =null;
    private FuenteTabla insert=null;
    private DefaultComboBoxModel modelo =new DefaultComboBoxModel() ;
    private List<String> lista=new ArrayList();
    private boolean AutoNumerico;
    
    private String LlaveInterna="";
    private String Dato="";
  
    public ComboFuente(){
        this.setEditable(true);
        new AutoCompletion(this);
    }
    public void Llenar(){
        try {
          if(this.getTbl()!=null){ 
              this.getTbl().Consultar();
              while(this.getTbl().getRs().next()){   
                    lista.add(this.getTbl().getRs().getString(this.getLlaveInterna()));
                    modelo.addElement(this.getTbl().getRs().getString(getDato())); 
                    
                }   
     this.setModel(modelo);
        
        
        }else{
            System.out.println("vacio");
        }
          
          } catch (SQLException ex) {
              System.out.println("error");
                
            }
    }
    
    @Override
    public boolean isLlave() {
        return false;
    }

    @Override
    public String getCampo() {
       return this.Campo;
    }

    @Override
    public String getTipoSeleccionado() {
        return "Texto";
    }

    @Override
    public String getText() {
       return lista.get(this.getSelectedIndex());
    }

 
    
    public String LlaveSeleccionada(){
        return(String.valueOf(lista.get(this.getSelectedIndex())));
    }

  
    public void setCampo(String Campo) {
        this.Campo = Campo;
    }


    public String[] getTipo() {
        return Tipo;
    }

 
    
    public void setTipo(String[] Tipo) {
        this.Tipo = Tipo;
    }


    public FuenteTabla getTbl() {
        return tbl;
    }

 
    public void setTbl(FuenteTabla tbl) {
        this.tbl = tbl;
        
    }


    public String getLlaveInterna() {
        return LlaveInterna;
    }


    public void setLlaveInterna(String llave) {
        this.LlaveInterna = llave;
    }

    public String getDato() {
        return Dato;
    }

    public void setDato(String Dato) {
        this.Dato = Dato;
    }

    @Override
    public boolean validar() {
        return true;
    }

    @Override
    public boolean valor() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void Limpiar() {
        this.setSelectedIndex(1);
    }

    /**
     * @return the insert
     */
    public FuenteTabla getInsert() {
        return insert;
        
    }

    /**
     * @param insert the insert to set
     */
    public void setInsert(FuenteTabla insert) {
        this.insert = insert;
        if(insert!=null){
            this.getInsert().addObserver(this);
            this.getInsert().getLstObservadores().add(this);
        }
    }

    @Override
    public void update(Observable o, Object o1) {
        try {
      String llavest=  this.getTbl().ConsultarSE(this.getTbl().getSqlcode()+ " where "+this.LlaveInterna+" = '"+
            this.getInsert().getRs().getString(this.getLlaveInterna())+"'").getString(this.getDato());
            this.setSelectedItem(llavest);
        } catch (SQLException ex) {
           
        }
    }

    @Override
    public boolean isAutoNumerico() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * @param AutoNumerico the AutoNumerico to set
     */
    public void setAutoNumerico(boolean AutoNumerico) {
        this.AutoNumerico = AutoNumerico;
    }
    
       

}


